跳到主要内容

1_第一个物品

概述:

  1. 在mod包下模仿Vanilla的Items类,创建item包,再创建ModItems类

  2. 模仿Items类中的register方法,写一个register方法

  3. 声明item,并在赋值的时候使用刚才写的register方法

  4. 可以再声明一个 static void 的 initialize方法,用来初始化ModItem,也方便稍后在主类中调用。

  5. 最后在Mod主类中调用ModItems的 static方法,可以初始化所有static变量

public class ModItems {
public static void initialize(){
// Get the event for modifying entries in the ingredients group.
// And register an event handler that adds our suspicious item to the ingredients group.
ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS)
.register((itemGroup) -> itemGroup.add(ModItems.PINK_HEART));
}
public static Item register(Item item, String id){
return (Item) Registry.register(Registries.ITEM, Identifier.of(ToDoList.MOD_ID,id), item);
}
public static final Item PINK_HEART = register(
new Item(new Item.Settings()),
"pink_heart"
);
}


Major Idea:模仿Vanilla的代码、项目结构 How to remember:

  • lang 语言文件,肯定包含了所有物品、方块、材质的名称 采用语言来命名,例如 zh_cn.json
{
"item.to-do-list.pink_heart": "粉色爱心"
}
  • models 模型文件,对于item,肯定是渲染方式和2D sprite,对于3D物品,方块,则是模型,对于item类,采用的是json文件指明材质和渲染方式
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "to-do-list:item/pink_heart"
}
}
  • textures 材质文件,故也要分item类出来